/* ***** BEGIN LICENSE BLOCK *****
 *   Version: MPL 1.1/GPL 2.0/LGPL 2.1
 *
 * The contents of this file are subject to the Mozilla Public License Version
 * 1.1 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 * http://www.mozilla.org/MPL/
 * 
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * The Original Code is ThumbsDown.
 *
 * The Initial Developer of the Original Code is
 * Atte Kemppilä.
 * Portions created by the Initial Developer are Copyright (C) 2008
 * the Initial Developer. All Rights Reserved.
 *
 * Contributor(s):
 *
 * Alternatively, the contents of this file may be used under the terms of
 * either the GNU General Public License Version 2 or later (the "GPL"), or
 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 * in which case the provisions of the GPL or the LGPL are applicable instead
 * of those above. If you wish to allow use of your version of this file only
 * under the terms of either the GPL or the LGPL, and not to allow others to
 * use your version of this file under the terms of the MPL, indicate your
 * decision by deleting the provisions above and replace them with the notice
 * and other provisions required by the GPL or the LGPL. If you do not delete
 * the provisions above, a recipient may use your version of this file under
 * the terms of any one of the MPL, the GPL or the LGPL.
 * 
 * ***** END LICENSE BLOCK ***** */


function ScriptPage() // extend WizardPage
{
    WizardPage.call(this);
}

ScriptPage.prototype =
{
    onPageShow: function()
    {
        var script = model;
        var msg = _("finish.save");
        
        if (model.matchingScript)
        {
            script = this._toModelScript(model.matchingScript);
            msg = _("finish.match");
        }
        
        document.getElementById("lbl_script_msg").textContent = msg;
        
        document.getElementById("grid_script").setAttribute("thumbnailType", script.thumbnailType);
        document.getElementById("grid_script").setAttribute("linkType", script.linkType);
        document.getElementById("grid_script").setAttribute("type", script.type);
        
        document.getElementById("lbl_script_name").value = script.name;
        
        document.getElementById("lbl_script_thumbnailType").value = _("thumbnailType." + script.thumbnailType);
        document.getElementById("lbl_script_thumbnailPattern").value = script.thumbnailPattern;
        document.getElementById("lbl_script_linkType").value = _("linkType." + script.linkType);
        document.getElementById("lbl_script_linkPattern").value = script.linkPattern;
        
        document.getElementById("lbl_script_type").value = _("type." + script.type);
        
        switch (script.linkType)
        {
            case "xpath":
                document.getElementById("lbl_script_linkExpr_xpath").value = script.linkExpr;
                break;
        }
        
        switch (script.type)
        {
            case "regexp":
                document.getElementById("lbl_script_source").value = _("type." + script.type + "." + script.source);
                document.getElementById("lbl_script_pattern").value = script.pattern;
                document.getElementById("lbl_script_template").value = script.template;
                break;
                
            case "wrapped":
                document.getElementById("lbl_script_attrName").value = script.attrName;
                document.getElementById("lbl_script_attrValue").value = script.attrValue;
                break;
        }
    },
    
    _toModelScript: function(script)
    {
        let modelScript =
        {
            name: script.name,
            thumbnailType: script.thumbnailType,
            thumbnailPattern: (script.thumbnailPattern ? script.thumbnailPattern.pattern : ""),
            linkType: script.linkType,
            linkExpr: script.linkExpr,
            linkPattern: (script.linkPattern ? script.linkPattern.pattern : ""),
            type: script.type,
            source: script.source,
            pattern: (script.pattern ? script.pattern.pattern : ""),
            template: script.template,
            attrName: script.attrName,
            attrValue: (script.attrValue ? script.attrValue.pattern : ""),
        };
        
        return modelScript;
    }
}

extend(ScriptPage, WizardPage);

pages.script = new ScriptPage();
